﻿namespace Socket.Core
{
    using System;

    public interface IClient
    {
        event EventHandler<SessionArgs> Connected;

        event EventHandler<SessionArgs> DisConnected;

        event EventHandler<HeartbeatReceivedArgs> HeartbeatReceived;

        event EventHandler<ReceivedArgs> Received;

        void DisConnect();
        void Setup(ClientConfig config);
        bool StartConnect();

        bool IsConnected { get; }

        IPackageCommand PackageCommand { get; }

        ISession ServerSession { get; }
    }
}

